// CodeGear C++Builder
// Copyright (c) 1995, 2015 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'ocv.haar.pas' rev: 30.00 (Windows)

#ifndef Ocv_HaarHPP
#define Ocv_HaarHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>
#include <SysInit.hpp>
#include <ocv.core.types_c.hpp>

//-- user supplied -----------------------------------------------------------

namespace Ocv
{
namespace Haar
{
//-- forward type declarations -----------------------------------------------
struct TCvHidHaarFeatureRect;
struct TCvHidHaarTreeNode;
struct TCvHidHaarClassifier;
struct TCvHidHaarStageClassifier;
struct TCvHidHaarClassifierCascade;
//-- type declarations -------------------------------------------------------
typedef int TSumType;

typedef int *pSumType;

typedef double Tsqsumtype;

typedef double *psqsumtype;

struct DECLSPEC_DRECORD TCvHidHaarFeatureRect
{
public:
	int *p0;
	int *p1;
	int *p2;
	int *p3;
};


typedef System::StaticArray<TCvHidHaarFeatureRect, 3> TCvHidHaarFeature;

typedef TCvHidHaarTreeNode *pCvHidHaarTreeNode;

struct DECLSPEC_DRECORD TCvHidHaarTreeNode
{
public:
	TCvHidHaarFeature feature;
	float threshold;
	int left;
	int right;
};


typedef TCvHidHaarClassifier *pCvHidHaarClassifier;

struct DECLSPEC_DRECORD TCvHidHaarClassifier
{
public:
	int count;
	TCvHidHaarTreeNode *node;
	float *alpha;
};


typedef TCvHidHaarStageClassifier *pCvHidHaarStageClassifier;

struct DECLSPEC_DRECORD TCvHidHaarStageClassifier
{
public:
	int count;
	float threshold;
	TCvHidHaarClassifier *classifier;
	int two_rects;
	TCvHidHaarStageClassifier *next;
	TCvHidHaarStageClassifier *child;
	TCvHidHaarStageClassifier *parent;
};


struct DECLSPEC_DRECORD TCvHidHaarClassifierCascade
{
public:
	int count;
	int isStumpBased;
	int has_tilted_features;
	int is_tree;
	double inv_window_area;
	Ocv::Core::Types_c::TCvMat sum;
	Ocv::Core::Types_c::TCvMat sqsum;
	Ocv::Core::Types_c::TCvMat tilted;
	TCvHidHaarStageClassifier *stage_classifier;
	double *pq0;
	double *pq1;
	double *pq2;
	double *pq3;
	int *p0;
	int *p1;
	int *p2;
	int *p3;
	void * *ipp_stages;
};


//-- var, const, procedure ---------------------------------------------------
static const System::Int8 CV_HAAR_FEATURE_MAX = System::Int8(0x3);
}	/* namespace Haar */
}	/* namespace Ocv */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV_HAAR)
using namespace Ocv::Haar;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV)
using namespace Ocv;
#endif
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// Ocv_HaarHPP
